#pragma once
#include "Sentence.h"
#include "Item.h"
#include "Character.h"

class Character;
struct Phrase;

union ActionData
{
	Character* character;
	Item* item;
	int iValue;
	int fValue;
	bool bValue;
};

class Quest
{
	public:
		Quest();
		virtual ~Quest();

		int progress;
		Character* owner;

		virtual Phrase* GetPhrase(Character* aCharacter) = 0;
		virtual void OnAction(EMenuAction aAction,
			ActionData aArg1 = ActionData(), ActionData aArg2 = ActionData(), ActionData aArg3 = ActionData()) = 0;

	protected:
		Phrase* phrase;
};

Quest* GetQuestGodsTears();
Quest* GetQuestCaravan(Character* aSmith);
Quest* GetQuestSilverKettle();